category: main
step: 2_staging
sub_step: 1_join
doc_status: ready
language: rus
main_number: "03"
macro join
Name | Category | In Main Macro | Doc Status |
---|---|---|---|
join_appmetrica_events | sub_main | join | ready |
join_mt_datestat | sub_main | join | ready |
join_appsflyer_events | sub_main | join | ready |
join_appmetrica_registry_appprofilematching | sub_main | join | ready |
join_sheets_periodstat | sub_main | join | ready |
join_utmcraft_registry_utmhashregistry | sub_main | join | ready |
join_vkads_datestat | sub_main | join | ready |
join_yd_datestat | sub_main | join | ready |
join_yd_datestat_smart | sub_main | join | ready |
join_ym_events | sub_main | join | ready |
Макрос join
предназначен для соединения разных потоков данных (стримов) одного источника.
Имя dbt-модели (=имя файла в формате sql в папке models) должно соответствовать шаблону:
join_{название_источника}_{название_пайплайна}
.
Например, join_appmetrica_events
.
Внутри этого файла вызывается макрос:
{{ datacraft.join() }}
Над вызовом макроса в файле будет указана зависимость данных через —depends_on
. То есть целиком содержимое файла выглядит, например, вот так:
-- depends_on: {{ ref('incremental_appmetrica_events_default_deeplinks') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_events') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_installations') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_screen_view') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_sessions_starts') }}
{{ datacraft.join() }}
Технически макрос join
- регулировщик. Поскольку данные в разных источниках организованы по-разному, внутри для каждого источника будет действовать своя разновидность макроса join
, внутри которой и происходит основная работа с данными.
Например, макрос join
перенаправляет данные из источника appmetrica
в макрос join_appmetrica_events
, а данные из источника ym
в макрос join_ym_events
.
Если у вас какой-то свой источник данных, или вам нужно что-то подправить в коде под себя - это делается здесь, на шаге join
, внутри под-макроса join
для вашего источника.
Этот макрос принимает следующие аргументы:
params
(по умолчанию: none)disable_incremental
(по умолчанию: none)override_target_model_name
(по умолчанию: none)date_from
(по умолчанию: none)date_to
(по умолчанию: none)limit0
(по умолчанию: none)Сначала макрос считает имя модели - либо из передаваемого аргумента (
override_target_model_name
), либо из имени файла (this.name
). При использовании аргумента override_target_model_name
макрос работает так, как если бы находился в модели с именем, равным значению override_target_model_name
.
Название модели, полученное тем или иным способом, разбивается на части по знаку нижнего подчёркивания. Например, название join_appmetrica_events
разобьётся на 3 части, из этих частей макрос возьмёт в работу:
sourcetype_name
→ appmetricapipeline_name
→ eventsДля некоторых моделей, например, для join_appmetrica_registry_appprofilematching
,
макрос возьмёт ещё:
link_name
→appprofilematchingЕсли пайплайн соответствует направлениям registry
или periodstat
, то автоматически задаётся аргумент disable_incremental
, равный True
. Это значит, что в таких данных нет инкрементального поля с датой.
Далее макрос генерирует имя того макроса join, куда стоит перенаправить эти данные.
Если пайплайн не является registry
, то паттерн будет таким:
'join_'~ sourcetype_name ~'_'~ pipeline_name
Для данных пайплайна registry
паттерн будет чуть длиннее:
'join_'~ sourcetype_name ~'_'~ pipeline_name ~ '_' ~ link_name
Также дополнительно вводится разграничение для двух видов yandex direct - со смарт-кампаниями и без них (они будут обрабатываться отдельно).
Когда имя макроса, куда стоит перенаправить данные, определено, макрос join вызывает его.
На данный момент в datacraft реализованы следующие под-макросы шага join
:
Файл в формате sql в папке models. Название файла:
join_appmetrica_events
Содержимое файла:
-- depends_on: {{ ref('incremental_appmetrica_events_default_deeplinks') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_events') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_installations') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_screen_view') }}
-- depends_on: {{ ref('incremental_appmetrica_events_default_sessions_starts') }}
{{ datacraft.join() }}
Это третий из основных макросов.